﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <assert.h>
//模拟实现strncpy
//char* my_strncpy(char* dest, const char* src, size_t i)
//{
//	assert(dest != NULL);
//	assert(src != NULL);
//	char* ret = dest;
//	while (i)
//	{
//		*dest = *src;
//		src++;
//		dest++;
//		i--;
//	}
//	return ret;
//}
//int main()
//{
//	char a[] = "I LOVE YOU";
//	char b[] =  "SORRY" ;
//	my_strncpy(a, b, 5);
//	printf("%s", a);
//}

//模拟实现strncat
//char* my_strncat(char* dest, const char* src, size_t num)
//{
//	assert(dest != NULL);
//	assert(src != NULL);
//	char* ret = dest;
//	while (*dest)
//	{
//		dest++;
//	}
//	//源字符串长度大于num
//	if (strlen(src) >= num)
//	{
//		while (num--)
//		{
//			*dest++ = *src++;
//		}
//	}
//	else
//	{
//		while (*src != '\0')
//		{
//			*dest++ = *src++;
//		}
//	}
//	return ret;
//}
//
//int main()
//{
//	char string[80] = "This is the initial string!";
//	char suffix[] = " extra text to add to the string...";
//	/* Combine strings with no more than 19 characters of suffix: */
//	printf("Before: %s\n", string);
//	my_strncat(string, suffix, 19);
//	printf("After:  %s\n", string);
//	return 0;
//}

//void* my_memcpy(void* dest, const void* src, size_t num)
//{
//	void* ret = dest;
//	assert(dest);
//	assert(src);
//	while (num--)
//	{
//		*(char*)dest = *(char*)src;
//		dest = (char*)dest + 1;
//		src = (char*)src + 1;
//	}
//	return(ret);
//}
//int main()
//{
//	int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[10] = { 0 };
//	my_memcpy(arr2, arr1, 5 * sizeof(int));
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d", arr1[i]);
//	}
//	return 0;
//}

//void* memmove(void* dst, const void* src, size_t count)
//{
//	void* ret = dst;
//	if (dst <= src || (char*)dst >= ((char*)src + count)) 
//	{
//		while (count--) {
//			*(char*)dst = *(char*)src;
//			dst = (char*)dst + 1;
//			src = (char*)src + 1;
//		}
//	}
//	else 
//	{
//		dst = (char*)dst + count - 1;
//		src = (char*)src + count - 1;
//		while (count--) {
//			*(char*)dst = *(char*)src;
//			dst = (char*)dst - 1;
//			src = (char*)src - 1;
//		}
//	}
//	return(ret);
//}
//int main()
//{
//	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
//	memmove(arr1 + 2, arr1, 20);
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr1[i]);
//	}
//	return 0;
//}


//fopen fclose
//int main()
//{
//	FILE* pFile;
//	pFile = fopen("myfile.txt", "w");
//	if (pFile != NULL)
//	{
//		fputs("fopen example", pFile);
//		fclose(pFile);
//	}
//	return 0;
//}

int main()
{
    long num = 0;
    FILE* fp = NULL;
    if ((fp = fopen("myfile.txt", "r")) == NULL)
    {
        printf("Can’t open the file!");
        exit(0);
    }
    while (fgetc(fp) != EOF)
    {
        num++;
    }
    printf("num=%d\n", num);
    fclose(fp);
    return 0;
}